使用 Git Hook 自动部署 Hexo 到个人 VPS

前几个文章安装了git
现在配置下git 实现自动部署
第一步

安装 git:(Ubuntu 14.04)

$ sudo apt-get install git

//yum install git

第二步

创建一个 git 用户,用来运行 git 服务:

$ sudo adduser git
虽说现在的仓库只有我们自己在使用,新建一个 git 用户显得不是很有必要,但是为了安全起见,还是建议使用单独的 git 用户来专门运行 git 服务
设置密码git 用户密码
passwd git xxxx

第三步

创建证书登录,把自己电脑的公钥,也就是 ~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中,添加公钥之后可以防止每次 push 都输入密码。
看前面文章配置这个里面的步骤缺失对centos 6 来说配置的不够

第四步

初始化 Git 仓库,我是将其放在 /var/repo/blog.git 目录下的:

1
2
3
$ sudo mkdir /var/repo
$ cd /var/repo
$ sudo git init --bare blog.git

使用 –bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

第五步

配置 git hooks,关于 hooks 的详情内容可以参考这里。

我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。

在 blog.git/hooks 目录下新建一个 post-receive 文件:

1
2
$ cd /var/repo/blog.git/hooks
$ vim post-receive

在 post-receive 文件中写入如下内容:

1
2
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

注意,/var/www/hexo 要换成你自己的部署目录,一般可能都是 /var/www/html。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

不要忘记设置这个文件的可执行权限:

1
chmod +x post-receive

注: 如果hook 钩子失效, 注意钩子写文件的地方的文件权限
第六步

改变 blog.git 目录的拥有者为 git 用户:

1
$ sudo chown -R git:git blog.git

第七步

禁用 git 用户的 shell 登录权限。

出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现,在 /etc/passwd 中找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash
将其改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll

至此,服务器端的配置就完成了。注: 我的配置这里不行

本地配置

配置你的 hexo 博客可以自动 deploy 到服务器上,再也不用 ftp 上传了。

修改 hexo 目录下的 _config.yml 文件,找到 [deploy] 条目,并修改为:

deploy:
type: git
repo: git@www.swiftyper.com:/var/repo/blog.git
branch: master

要注意切换成你自己的服务器地址,以及服务器端 git 仓库的目录。
如果识别不了地址可以用ssh 开头的标准地址, 前面日记也有记录
如:我的配置

1
2
3
4
5
6
7
8
deploy:
type: git
repo:
github: https://github.com/czboosj/czboosj.github.io.git,master
coding: https://git.coding.net/czboosj/czboosj.git,master
104.194.94.204: ssh://git@104.194.94.204:26327/var/repoblog/blog.git
branch: master

本地配置就是如此地简单。至此,我们的 hexo 自动部署已经全部配置好了。

大多数内容转自
http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/

Author

陈昭

Posted on

2016-11-08

Updated on

2021-12-27

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Kommentare

You forgot to set the shortname for Disqus. Please set it in _config.yml.